<?php
/**
 *公用验证,转换,检查等方法
 **/

class lib_utils
{
    /**
     * 验证手机号的合法性
     * @return boolean
     * @param string $str 手机号字符串
     */
    public static function _is_mobile($str)
    {
        if (empty($str))
            return false;
        return (preg_match("/^1[358]\d{9}$/", $str)) ? true : false;
    }
    
    /**
     * 验证Email的合法性
     * @return boolean
     * @param string $str Email字符串
     */
    public static function _is_email($str)
    {
        if (empty($str))
            return false;
        return preg_match('/^[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)*@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+){1,4}$/', $str) ? true : false;
    }

    /**
     * 按word方式统计字数
     * @param string $str
     */
    public static function _get_length($str)
    {
        $len    = strlen($str);
        $strlen = $len;
        for ($i = 0; $i < $len; $i++)
        {
            if (ord($str[$i]) > 128)
            {
                $strlen = $strlen - 1;
                $i++;
            }
        }
        return $strlen;
    }
    //二维数组的合并,保留键名
    public static function _array_merges($arr1, $arr2)
    {
        foreach ($arr2 as $key => $value)
        {
            if (!is_array($arr1[$key]))
            {
                $arr1[$key] = array();
            }
            $arr1[$key] = array_merge($arr1[$key], $value);
        }
        return $arr1;
    }
    
    /**
     * 读取文件内容，目前只支持csv格式文件
     * @param string $file
     */
    public static function _read_file($file)
    {
        $file_info = pathinfo($file);
        return file($file);
    }
    /**
     * 从序列化数组的找出某一个key的值
     * @param string $content
     * @param string $key
     */
    public static function _serialize_pop($content, $key)
    {
        if (empty($content) || empty($key))
        {
            return '';
        }
        $content = unserialize($content);
        return $content[$key];
    }

    /**
     * 循环创建目录
     *
     * @param string $dir
     * @param int $mode
     * @return boolean
     */
    public static function mkdir($path, $mode = '0755')
    {
        if (is_dir($path) || @mkdir($path, $mode))
        {
            return true;
        }
        if (!self::mkdir(dirname($path), $mode)) {
            return false;
        }
        return @mkdir($path, $mode);
    }

    /**
     * 提交POST请求，curl方法
     * @param string  $url       请求url地址
     * @param array   $data      POST数据
     * @param array   $header    头信息
     * @param int     $timeout   超时时间
     * @return array             请求结果,
     */
    public static function _curl_post($url, $data = array(), $header = array(), $timeout = 5)
    {
        $ch = curl_init();
	    curl_setopt($ch, CURLOPT_URL, $url);
		curl_setopt($ch, CURLOPT_POST, 1);
		curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
		curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
        curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
        $info = curl_exec($ch);
		curl_close($ch);
		return $info;
    }

    /**
     * 提交GET请求，curl方法
     * @param string  $url       请求url地址
     * @param mixed   $data      GET数据,数组或类似id=1&k1=v1
     * @param array   $header    头信息
     * @param int     $timeout   超时时间
     * @return array             请求结果,
     */
    public static function _curl_get($url, $data = array(), $header = array(), $timeout = 5)
    {
        $url =  $url.'?'.http_build_query($data);
  		$ch = curl_init();
	    curl_setopt($ch, CURLOPT_URL, $url);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
		curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
        curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
        curl_setopt($ch, CURLOPT_POST, 0);
		$info = curl_exec($ch);
		curl_close($ch);
        return $info;
    }

}
